package com.akkainaction.tool.scheduler;

import akka.actor.ActorRef;
import akka.actor.ActorSystem;
import akka.actor.Cancellable;
import akka.actor.Props;
import com.akkainaction.tool.scheduler.actor.TargetActor;
import scala.concurrent.duration.Duration;
import java.util.concurrent.TimeUnit;

public class TestSchedulerOnce {

    public static void main(String[] args) {
        ActorSystem system = ActorSystem.create("sys");
        ActorRef targetActorRef = system.actorOf(Props.create(TargetActor.class), "targetActor");
        //这段代码表示：延迟3秒之后给targetActorRef发送一条消息"hello"，该Acor返回的消息会被sender收到，假如不需要收到回复，则可以将最后一个参数设置为null（即无发送者）。
        //Duration.create方法第二个参数的可选值有：day，hour，minute，second，millisecond等，分别表示不同时间尺度。
        Cancellable cancellable = system.scheduler().scheduleOnce(Duration.create(3, TimeUnit.SECONDS), targetActorRef, "hello", system.dispatcher(), ActorRef.noSender());
        //如果想取消scheduler，调用Cancellable的cancel方法
        //cancellable.cancel();
    }
}
